int n; cin >> n; vector<int> a(n + 1), pre(n + 1); for (int i = 1; i <= n; ++i) { cin >> a[i]; pre[i] = pre[i - 1] + a[i]; }
int mx1 = 0, mx2 = 0; for (int i = 1; i <= n; ++i) { int x = pre[i - 1] - i * (i - 1); mx1 = max(x, mx1); x = i * (i + 1) - pre[i]; mx2 = max(x, mx2); }
cout << pre[n] + mx1 + mx2 << endl; }
intmain(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int _ = 1; cin >> _; while (_--) solve(); return0; }
这是错的,因为L要小于R,而我取了全局最大:
1 2 3 4 5 6 7
int mx1 = 0, mx2 = 0; for (int i = 1; i <= n; ++i) { int x = pre[i - 1] - i * (i - 1); mx1 = max(x, mx1); x = i * (i + 1) - pre[i]; mx2 = max(x, mx2); }
正解是:
1 2 3 4 5 6 7
int mx = 0, ans = 0; for (int i = 1; i <= n; ++i) { int x = pre[i - 1] - i * (i - 1); mx = max(x, mx); x = i * (i + 1) - pre[i] + mx; ans = max(x, ans); }
int n; cin >> n; vector<int> a(n + 1), pre(n + 1); for (int i = 1; i <= n; ++i) { cin >> a[i]; pre[i] = pre[i - 1] + a[i]; }
int mx = 0, ans = 0; for (int i = 1; i <= n; ++i) { int x = pre[i - 1] - i * (i - 1); mx = max(x, mx); x = i * (i + 1) - pre[i] + mx; ans = max(x, ans); }
cout << pre[n] + ans << endl; }
intmain(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int _ = 1; cin >> _; while (_--) solve(); return0; }
#include<bits/stdc++.h> usingnamespace std; constint N=1e9+5; voidsolve(){ int n; cin >> n; vector<int> a(n + 1), b(n + 1); longlong sum = 0; for (int i = 1; i <= n; ++i) { cin >> a[i]; sum += a[i]; b[i] = 2 * i - a[i]; } longlong ans = 0, tot = 0; for (int i = 1; i <= n; ++i) { tot = max(0LL, tot + b[i]); ans = max(tot, ans); }
cout << ans + sum << endl;
} intmain(){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); int _=1; cin>>_; while(_--) solve(); return0; }
#include<bits/stdc++.h> using ll = longlong; usingnamespace std; constint N=1e9+5; voidsolve(){ ll n; cin >> n; vector<int> a(n + 1); int ans = 0; for (int i = 1; i <= n; ++i) { a[i] = i; ans += i * (n - i + 1); } int cnt = 0; do { int sum = 0; for (int i = 1; i <= n; ++i) { int mn = 0x3f3f3f3f; for (int j = i; j <= n; ++j) { mn = min(mn, a[j]); sum += mn; } }
#include<bits/stdc++.h> using ll = longlong; usingnamespace std; constint N=1e9+5; voidsolve(){ ll n; cin >> n; vector<int> a(n + 1); int ans = 0; for (int i = 1; i <= n; ++i) { a[i] = i; ans += i * (n - i + 1); } int cnt = 0; do { int sum = 0; for (int i = 1; i <= n; ++i) { int mn = 0x3f3f3f3f; for (int j = i; j <= n; ++j) { mn = min(mn, a[j]); sum += mn; } }
#include<bits/stdc++.h> using ll = longlong; usingnamespace std;
voidsolve(){ ll n, k; cin >> n >> k; ll m = n; vector<int> a(n + 1);
ll sum = 1LL; for (int i = 1; i < n; ++i) { sum <<= 1LL; if (sum >= 1e12) { sum = 1e12; break; } }
if (k > sum) { cout << -1 << endl; return; } ll b = k - 1; //从0计数,减1 deque<ll> dq; dq.push_back(n); for (ll x = n - 1; x >= 1; --x) { if (b & 1LL) dq.push_back(x); else dq.push_front(x); b >>= 1; }
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.